//
// Created by tunm on 2024/3/14.
//

#ifndef SIMPLESEMANTIC_BASIC_DEF_H
#define SIMPLESEMANTIC_BASIC_DEF_H

#include <iostream>
#include <string>
#include <vector>

#ifndef SOLEX_API
#define SOLEX_API
#endif

namespace solex {

/**
 * @ingroup DataType
 * @{
 */

#if !defined(int64)
/** 64位整型定义 */
typedef int64_t int64;
#endif

#if !defined(uint64)
/** 64位无符号整型定义 */
typedef uint64_t uint64;
#endif

#if !defined(int32)
/** 32位整型定义 */
typedef int32_t int32;
#endif

#if !defined(uint32)
/** 32位无符号整型定义 */
typedef uint32_t uint32;
#endif

#if !defined(int8)
/** 8位整型定义 */
typedef int8_t int8;
#endif

#if !defined(uint8)
/** 无符号8位整型定义 */
typedef uint8_t uint8;
#endif

typedef int32_t RetCode;

typedef std::string Sentence;

typedef std::string Word;

typedef std::vector<Word> Words;

typedef std::vector<Sentence> Sentences;

typedef std::vector<int32_t> Indexes;

typedef struct {
    int32_t clsIndex = -1;
    Sentence label;
    float probability;
    std::vector<int> specialInt;
} AnalysisResult;

typedef struct {
    std::string folderPath;
    float threshold;
} Configuration;


typedef struct {
    int major;     ///< Major version number.
    int minor;     ///< Minor version number.
    int patch;     ///< Patch version number.
} Version;

}   // namespace solex

#endif //SIMPLESEMANTIC_BASIC_DEF_H
